﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Contract.Business.Process;
using Contract.Business.Entity;
using Contract.Business.Filter;

namespace Fast.Presentation.WinForms.Cruds
{
    public partial class FrmClienteConsultar : Form
    {
        public FrmClienteConsultar()
        {
            InitializeComponent();
        }

        #region *** Atributos ***

        public BECliente entidade;
        private FECliente filtro;

        #endregion

        #region Singleton
        private BPCliente bpCliente;
        private BPCliente process
        {
            get
            {
                if (bpCliente == null)
                    bpCliente = new BPCliente();

                return bpCliente;
            }
        }
        #endregion

        #region *** Eventos ***
        private void btnConsultar_Click(object sender, EventArgs e)
        {
            try
            {
                filtro = new FECliente();
                filtro.Nome = this.txtNome.Text;
                filtro.TelResidencial = this.txtTelefone.Text;
                if (this.cboRegiaoEntrega.SelectedValue.ToString() != "0")
                    filtro.CodigoRegiaoEntrega = Convert.ToInt32(cboRegiaoEntrega.SelectedValue);

                if(chkBloqueado.CheckState != CheckState.Indeterminate)
                    filtro.Bloqueado = chkBloqueado.Checked;

                List<BECliente> lista = process.ObterTodos(filtro);

                this.dgvCliente.DataSource = lista;

                if (lista == null || lista.Count == 0)
                    Utilidades.ExibirMensagem("Nenhum Cliente encontrado.");
            }
            catch (Exception ex)
            {
                Utilidades.LogarError(ex);
                MessageBox.Show(Utilidades.BuscarMensagemError());
            }
        }

        private void FrmClienteConsultar_Load(object sender, EventArgs e)
        {
            entidade = null;
            UtilidadesListas.carregarRegiaoEntrega(cboRegiaoEntrega);
            btnConsultar.PerformClick();
        }

        private void dgvCliente_DoubleClick(object sender, EventArgs e)
        {
            try
            {
                if (this.dgvCliente.SelectedRows.Count == 0)
                    Utilidades.ExibirMensagem("Nenhum Cliente foi selecionado");
                else
                {
                    entidade = new BECliente();
                    entidade.Codigo = Int16.Parse(this.dgvCliente.SelectedRows[0].Cells["dgvCodigo"].Value.ToString());
                    entidade.Nome = this.dgvCliente.SelectedRows[0].Cells["dgvNome"].Value.ToString();
                    entidade.Bloqueado = bool.Parse(this.dgvCliente.SelectedRows[0].Cells["dgvBloqueado"].Value.ToString());
                    entidade.Endereco = this.dgvCliente.SelectedRows[0].Cells["dgvEndereco"].Value.ToString();

                    if(this.dgvCliente.SelectedRows[0].Cells["dgvBairro"].Value != null)
                        entidade.Bairro = this.dgvCliente.SelectedRows[0].Cells["dgvBairro"].Value.ToString();

                    if (this.dgvCliente.SelectedRows[0].Cells["dgvCidade"].Value != null)
                        entidade.Cidade = this.dgvCliente.SelectedRows[0].Cells["dgvCidade"].Value.ToString();

                    if (this.dgvCliente.SelectedRows[0].Cells["dgvUF"].Value != null)
                        entidade.UF = this.dgvCliente.SelectedRows[0].Cells["dgvUF"].Value.ToString();

                    if (this.dgvCliente.SelectedRows[0].Cells["dgvCEP"].Value != null)
                        entidade.CEP = this.dgvCliente.SelectedRows[0].Cells["dgvCEP"].Value.ToString();

                    if (this.dgvCliente.SelectedRows[0].Cells["dgvPontoReferencia"].Value != null)
                        entidade.PontoReferencia = this.dgvCliente.SelectedRows[0].Cells["dgvPontoReferencia"].Value.ToString();

                    entidade.TelResidencial = this.dgvCliente.SelectedRows[0].Cells["dgvTelResidencial"].Value.ToString();

                    if (this.dgvCliente.SelectedRows[0].Cells["dgvTelResidencial2"].Value != null)
                        entidade.TelResidencial2 = this.dgvCliente.SelectedRows[0].Cells["dgvTelResidencial2"].Value.ToString();

                    if (this.dgvCliente.SelectedRows[0].Cells["dgvTelComercial"].Value != null)
                        entidade.TelComercial = this.dgvCliente.SelectedRows[0].Cells["dgvTelComercial"].Value.ToString();

                    if (this.dgvCliente.SelectedRows[0].Cells["dgvEmail"].Value != null)
                        entidade.Email = this.dgvCliente.SelectedRows[0].Cells["dgvEmail"].Value.ToString();

                    if (this.dgvCliente.SelectedRows[0].Cells["dgvNascimento"].Value != null)
                        entidade.Nascimento = DateTime.Parse(this.dgvCliente.SelectedRows[0].Cells["dgvNascimento"].Value.ToString());

                    if (this.dgvCliente.SelectedRows[0].Cells["dgvObservacao"].Value != null)
                        entidade.Observacao = this.dgvCliente.SelectedRows[0].Cells["dgvObservacao"].Value.ToString();
                    
                    entidade.CodigoRegiaoEntrega = int.Parse(this.dgvCliente.SelectedRows[0].Cells["dgvCodigoRegiaoEntrega"].Value.ToString());

                    this.Close();
                }
            }
            catch (Exception ex)
            {
                Utilidades.LogarError(ex);
                MessageBox.Show(Utilidades.BuscarMensagemError());
            }
        }

        #endregion
    }
}
